home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_029 / RDXFS_R1.LZH / archive.lzh / ramdisk / ramdisk.h < prev    next >
C/C++ Source or Header  |  1996-04-23  |  3KB  |  139 lines

  1. /*
  2.  * ramdisk.h vom 23.04.1996
  3.  *
  4.  * Autor:
  5.  * Thomas Binder
  6.  * (binder@rbg.informatik.th-darmstadt.de)
  7.  *
  8.  * Zweck:
  9.  * Enthält die Strukturdefinitionen zum Ramdisk-Filesystem für
  10.  * MagiC 3.
  11.  *
  12.  * History:
  13.  * 05.11.-
  14.  * 25.11.1995: Erstellung (mit Unterbrechungen)
  15.  * 04.12.1995: DEFAULTFILE verdoppelt und DEFAULTDIR abhängig von
  16.  *             DEFAULTFILE gemacht.
  17.  * 05.12.1995: Neue Struktur FILEBLOCK.
  18.  * 27.12.1995: Dcntl aufgenommen und erste Vorbereitungen für
  19.  *             Konfigurierbarkeit von Ramverbrauch und -typ
  20.  *             getroffen.
  21.  * 28.12.1995: FSTAT, FIONREAD, FIONWRITE und FUTIME aufgenommen.
  22.  * 29.12.1995: In RAMDISK_DHD dhd_dir durch dhd_dd ersetzt, ebenso
  23.  *             dta_dir durch dta_dd in RAMDISK_DTA (zwecks Verwaltung
  24.  *             von atime/adate).
  25.  * 30.12.1995: Die Änderungen von gestern gerade wieder retour... War
  26.  *             wohl irgendwie zu spät, als ich das gemacht habe ;)
  27.  *             #include "proto.h" eingesetzt.
  28.  * 31.12.1995: #include "version.h" eingesetzt.
  29.  *             Neues Element fd_is_parent in RAMDISK_FD-Struktur.
  30.  * 23.04.1996: Anpassung an neue Dateistruktur.
  31.  */
  32.  
  33. #ifndef _RAMDISK_H
  34. #define _RAMDISK_H
  35.  
  36. #include "..\pc_xfs\pc_xfs.h"
  37.  
  38. #define MAX_FD            200
  39. #define MAX_DHD            100
  40. #define ROOTSIZE        100
  41. #define DEFAULTFILE        4096
  42. #define DEFAULTDIR        (DEFAULTFILE / sizeof(DIRENTRY))
  43. #define ROOT            0
  44. #define ROOT_DE            (DIRENTRY *)1L
  45. #define LEAVE_FREE        (512L * 1024L)
  46. #define RAM_TYPE        3
  47.  
  48. #define is_file(x)        ((x & S_IFMT) == S_IFREG)
  49. #define is_dir(x)        ((x & S_IFMT) == S_IFDIR)
  50. #define is_link(x)        ((x & S_IFMT) == S_IFLNK)
  51.  
  52. #define waccess(x)        ((x)->de_xattr.mode & S_IWUSR)
  53. #define raccess(x)        ((x)->de_xattr.mode & S_IRUSR)
  54. #define xaccess(x)        ((x)->de_xattr.mode & S_IXUSR)
  55.  
  56. #define parentfd(x)        ((x)->fd_parent->fd_file)
  57.  
  58. #define Kfree(x)        Mfree(x)
  59. #define Pdomain(x)        gemdos(0x119, (WORD)(x))
  60. #define Dcntl(x, y, z)    gemdos(0x130, (WORD)(x), (char *)(y),\
  61.     (LONG)(z))
  62.  
  63. #undef FA_RDONLY
  64. #undef FA_HIDDEN
  65. #undef FA_SYSTEM
  66. #undef FA_LABEL
  67. #undef FA_DIR
  68. #undef FA_CHANGED
  69. #undef FA_SYMLINK
  70. #define FA_RDONLY        0x01#define FA_HIDDEN        0x02#define FA_SYSTEM        0x04#define FA_LABEL        0x08#define FA_DIR            0x10#define FA_CHANGED        0x20
  71. #define FA_SYMLINK        0x40
  72. #undef FSTAT
  73. #undef FIONREAD
  74. #undef FIONWRITE
  75. #undef FUTIME
  76. #define FSTAT        0x4600
  77. #define FIONREAD    0x4601
  78. #define FIONWRITE    0x4602
  79. #define FUTIME        0x4603
  80.  
  81. typedef struct
  82. {
  83.     char    de_fname[34];
  84.     char    *de_faddr;
  85.     WORD    de_nr;
  86.     WORD    de_maxnr;
  87.     XATTR    de_xattr;
  88.     char    de_dummy[128 - sizeof(XATTR) - 42];
  89. } DIRENTRY;
  90.  
  91. typedef struct ram_fd
  92. {
  93.     DMD                *fd_dmd;
  94.     WORD            fd_refcnt;
  95.     WORD            fd_mode;
  96.     THE_MGX_DEV        *fd_dev;
  97.     LONG            fd_fpos;
  98.     DIRENTRY        *fd_file;
  99.     WORD            fd_is_parent;
  100.     struct ram_fd    *fd_parent;
  101.     BASPAG            *fd_owner;
  102. } RAMDISK_FD;
  103.  
  104. typedef struct
  105. {
  106.     DMD            *dhd_dmd;
  107.     DIRENTRY    *dhd_dir;
  108.     WORD        dhd_pos;
  109.     WORD        dhd_tosmode;
  110.     BASPAG        *dhd_owner;
  111. } RAMDISK_DHD;
  112.  
  113. typedef struct
  114. {
  115.     DIRENTRY    *dta_dir;
  116.     WORD        dta_pos;
  117.     char        dta_mask[13];
  118.     char        dta_attr;
  119.     char        dta_drive;
  120.     char        dta_attribute;
  121.     WORD        dta_time;
  122.     WORD        dta_date;
  123.     LONG        dta_len;
  124.     char        dta_name[14];
  125. } RAMDISK_DTA;
  126.  
  127. typedef struct fblk
  128. {
  129.     char        data[DEFAULTFILE];
  130.     struct fblk    *next;
  131. } FILEBLOCK;
  132.  
  133. #include "proto.h"
  134. #include "version.h"
  135.  
  136. #endif /* _RAMDISK_H */
  137.  
  138. /* EOF */
  139.